#!/bin/bash
#SBATCH -p kshdtest       # 分区名称
#SBATCH --gres=dcu:1      # 请求1个DCU资源
#SBATCH -n 1            # MPI进程数
#SBATCH -c 8           # 每个进程的CPU核心数
#SBATCH -t 08:00:00     # 最大运行时间 (8小时)
#SBATCH -J MatMulTest   # 作业名称
#SBATCH -o %x_%j.out    # 标准输出文件 (作业名_作业ID.out)
#SBATCH -e %x_%j.err    # 错误输出文件 (作业名_作业ID.err)

# 设置颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # 无色

echo -e "${YELLOW}====================================================${NC}"
echo -e "${YELLOW}    异构并行矩阵乘法性能测试套件 - HPC提交版本    ${NC}"
echo -e "${YELLOW}====================================================${NC}"

# 记录作业信息
echo -e "${BLUE}作业ID: $SLURM_JOB_ID${NC}"
echo -e "${BLUE}运行节点: $SLURM_JOB_NODELIST${NC}"
echo -e "${BLUE}分配CPU核心: $SLURM_JOB_CPUS_PER_NODE${NC}"
echo -e "${BLUE}开始时间: $(date)${NC}"
echo ""

# 加载必要的环境模块
echo -e "${BLUE}加载环境模块...${NC}"
module purge  # 清理已加载的模块，避免冲突
module load compiler/rocm/dtk-23.10
module load compiler/gcc/9.3.0 
module load anaconda3/5.2.0

# 切换到提交目录
cd $SLURM_SUBMIT_DIR
echo -e "${BLUE}工作目录: $(pwd)${NC}"

# 编译程序
echo -e "${BLUE}编译程序...${NC}"
make clean
make -j

# 创建结果目录
mkdir -p results
mkdir -p results/plots
mkdir -p results/nonsquare
mkdir -p results/nonsquare/plots
mkdir -p results/threadscan
mkdir -p results/threadscan/plots
mkdir -p results/report
mkdir -p logs

# 设置日志文件
LOG_FILE="logs/hpc_test_$(date +%Y%m%d_%H%M%S).log"
echo -e "${BLUE}日志文件: $LOG_FILE${NC}"

# 1. 运行方阵测试
echo -e "${BLUE}[1/5] 正在运行方阵性能测试...${NC}"
bash ./batch_test.sh

# 2. 运行非方阵测试
echo -e "${BLUE}[2/5] 正在运行非方阵性能测试...${NC}"
bash ./batch_test_nonsquare.sh

# 4. 生成方阵性能图表
echo -e "${BLUE}[3/4] 正在生成方阵性能可视化图表...${NC}"
python3 plot_performance.py

# 5. 生成非方阵性能图表
echo -e "${BLUE}[4/4] 正在生成非方阵性能可视化图表...${NC}"
python3 plot_nonsquare_performance.py
# 记录结束时间
echo -e "${BLUE}结束时间: $(date)${NC}" | tee -a $LOG_FILE
echo -e "${GREEN}所有测试完成！${NC}" | tee -a $LOG_FILE
